package string;

public class StringDemo03 {

    public static void main(String[] args) {
        /*
         * 字符串常量池
         */
        //"ABC"字面量被缓存到常量池
        String s1 = "ABC";
        //同样内容的字面量会替换为常量池中同一个对象的引用
        String s2 = "ABC";
        //s1 s2 引用了同一个对象, 利用==可以检查地址是否一致
        System.out.println(s1 == s2);
        //利用new运算动态创建的字符串，不会被放到常量池，
        //也不会重复的利用常量池中的字符串对象
        char[] chs = {'A','B','C'};
        String s3 = new String(chs);
        System.out.println(s1 == s3);

        System.out.println(s1 == S);
        String s4 = "AB"+"C"; //编译优化为"ABC"
        System.out.println(s1 == s4);

        String s5 = "AB";
        String s7 = s5+"C"; //s7 引用新对象
        System.out.println(s1 == s7);

    }
    public static final String S = "ABC";
    public static final String SS = "ABCD";
}
